// import com.alibaba.druid.sql.ast.SQLName;
// import com.alibaba.druid.sql.ast.statement.SQLPrimaryKey;
// import com.alibaba.druid.sql.ast.statement.SQLPrimaryKeyImpl;
// import com.alibaba.druid.sql.ast.statement.SQLTableConstraint;
// import com.alibaba.druid.sql.ast.statement.SQLTableElement;
// import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;
#pragma once
#include "../../../../ast/statement/SQLPrimaryKeyImpl.h"
#include "../../../../ast/statement/SQLPrimaryKey.h"
#include "../../../../ast/statement/SQLTableElement.h"
#include "../../../../ast/statement/SQLTableConstraint.h"
#include "OracleConstraint.h"

class OraclePrimaryKey
    : virtual public SQLPrimaryKeyImpl,
      virtual public OracleConstraint,
      virtual public SQLPrimaryKey,
      virtual public SQLTableElement,
      virtual public SQLTableConstraint
{
public:
  OracleUsingIndexClause_ptr using_;
  SQLName_ptr exceptionsInto;
  BOOL_ptr enable;
  OracleConstraint_Initially_ptr initially;
  BOOL_ptr deferrable;

  SHAREDOBJECT(OraclePrimaryKey);
  // @Override
  void accept0(SQLASTVisitor_ptr visitor);

  // @Override
  void accept0(OracleASTVisitor_ptr visitor);

  BOOL_ptr getDeferrable();

  void setDeferrable(BOOL_ptr deferrable);

  OracleUsingIndexClause_ptr getUsing();

  void setUsing(OracleUsingIndexClause_ptr using_);

  SQLName_ptr getExceptionsInto();

  void setExceptionsInto(SQLName_ptr exceptionsInto);

  BOOL_ptr getEnable();

  void setEnable(BOOL_ptr enable);

  OracleConstraint_Initially_ptr getInitially();

  void setInitially(OracleConstraint_Initially_ptr initially);

  void cloneTo(OraclePrimaryKey_ptr x);

  SQLObject_ptr clone();
};
